﻿namespace DomainServices.Tools.Pdb.SymStore
{
    using System;
    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.ComTypes;

    [ComImport, ComVisible(false), Guid("28AD3D43-B601-4d26-8A1B-25F9165AF9D7"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    internal interface ISymUnmanagedBinder3 : ISymUnmanagedBinder2, ISymUnmanagedBinder
    {
        [PreserveSig]
        int GetReaderForFile(IntPtr importer, [MarshalAs(UnmanagedType.LPWStr)] string filename, [MarshalAs(UnmanagedType.LPWStr)] string SearchPath, [MarshalAs(UnmanagedType.Interface)] out ISymUnmanagedReader retVal);
        [PreserveSig]
        int GetReaderFromStream(IntPtr importer, IStream stream, [MarshalAs(UnmanagedType.Interface)] out ISymUnmanagedReader retVal);
        [PreserveSig]
        int GetReaderForFile2(IntPtr importer, [MarshalAs(UnmanagedType.LPWStr)] string fileName, [MarshalAs(UnmanagedType.LPWStr)] string searchPath, int searchPolicy, [MarshalAs(UnmanagedType.Interface)] out ISymUnmanagedReader pRetVal);
        [PreserveSig]
        int GetReaderFromCallback(IntPtr importer, [MarshalAs(UnmanagedType.LPWStr)] string fileName, [MarshalAs(UnmanagedType.LPWStr)] string searchPath, int searchPolicy, [MarshalAs(UnmanagedType.IUnknown)] object callback, [MarshalAs(UnmanagedType.Interface)] out ISymUnmanagedReader pRetVal);
    }
}

